package com.xiaoshuidi.cloud.module.bpm.api.task.dto;

import lombok.Data;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Map;

/**
 * 流程实例的创建 Request DTO
 *
 * @author
 */
@Data
@Accessors(chain = true)
public class BpmProcessInstanceCreateReqDTO implements Serializable {

    /**
     * 流程定义的标识
     */
    @NotEmpty(message = "流程定义的标识不能为空")
    private String processDefinitionKey;
    /**
     * 变量实例
     */
    private Map<String, Object> variables;

    /**
     * 业务的唯一标识
     * <p>
     * 例如说，请假申请的编号。通过它，可以查询到对应的实例
     */
    @NotEmpty(message = "业务的唯一标识")
    private String businessKey;

    @NotNull(message = "tenantId不能为空")
    private Long tenantId;
    /**
     * 请求流程的服务名, 用于通知流程审批状态
     */
    @NotNull(message = "服务名称不能为空")
    private String serviceName;
    /*
     * 流程业务类型
     * {@link BpmBusinessTypeEnum}
     **/
    @NotNull(message = "流程业务类型不能为空")
    private String businessType;

    /**
     * 扩展信息,用于页面列表展示
     */
    private ExtendDto extendDto;

    @Data
    public static class ExtendDto implements Serializable {
        /**
         * 房间编号
         */
        private String roomId;
        /**
         * 租客/企业合同ID
         */
        private Long contractId;
        /**
         * 合同编号
         */
        private String contractNo;
        /**
         * 业主合同ID
         */
        private Long ownerContractId;
        /**
         * 房间名称
         */
        private String roomName;
        /**
         * 门店ID
         */
        private Long apartmentId;
        /**
         * 门店名称
         */
        private String apartmentName;
        /**
         * 租客姓名/企业名称
         */
        private String customName;
        /**
         * 租客手机号/企业联系方式
         */
        private String customPhone;
    }


}
